package Graficas_capas;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JToggleButton;
import javax.swing.SwingConstants;
import javax.swing.border.EtchedBorder;

import Juego.Juego;

/**Clase que mantiene el estado del panel de informacion
 * 
 * @author Javier Graff
 * @author Eric Avondet
 * @author Rodrigo Herrera
 *
 */
public class grafico_informacion 
{
	//panel donde se mostrara la informacion deseada
	private JPanel info_derecha;
	private JPanel info_izquierda;
	//LABEL QUE MANTIENE EL PUNTAJE DEL JUGADOR
	private JLabel puntaje;
	private JLabel txtpuntaje;
	private JLabel txtenergia;
	private JLabel txtbombas;
	private JLabel bombas;
	private JLabel energia;
	private JProgressBar barra;
	private Juego juego;
	private JToggleButton pausa;
	
	public grafico_informacion(Juego j)
	{
		juego=j;
		{
			info_izquierda = new JPanel();
			info_izquierda.setBackground(Color.black);
			info_izquierda.setLayout(null);
			info_izquierda.setBorder( BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
			info_izquierda.setBounds(0, 0, 150, 540);
			
			{
				barra = new JProgressBar();
				barra.setOrientation(SwingConstants.VERTICAL);
				barra.setStringPainted(true); 
				barra.setForeground(Color.red);
				barra.setBounds(0, 220, 70, 270);
			}
			{
				txtenergia = new JLabel();
				txtenergia.setBounds(75,220,70,270);
				ImageIcon fondo = new ImageIcon(getClass().getClassLoader().getResource("Imagenes/fondos/energia.png"));
				txtenergia.setIcon(fondo);	
			}
			{
				energia = new JLabel();
				energia.setBounds(0,225+barra.getHeight(),120,40);
				energia.setForeground(Color.white);
				energia.setFont(new java.awt.Font("Tahoma", 0, 36)); 
				energia.setHorizontalAlignment( SwingConstants.CENTER );
				energia.setBorder( BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
			}
			
			
		}
		{
			info_derecha= new JPanel();
			info_derecha.setBackground(Color.black);
			info_derecha.setLayout(null);
			info_derecha.setBorder( BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
			info_derecha.setBounds(850, 0, 150, 540);
			
			{
				pausa = new JToggleButton("Pausa (esc)");
				pausa.setSize(120,40);
				int posx = info_derecha.getWidth()/2 - pausa.getWidth()/2;
				pausa.setFocusable(false);
				pausa.setLocation(posx, info_derecha.getHeight()-pausa.getHeight()-30);
				pausa.setSelected(false);
				pausa.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jToggleButtonAudioActionPerformed(evt);
					}
				});
			}
			{
				
			}
			{
				txtpuntaje = new JLabel();
				ImageIcon fondo = new ImageIcon(getClass().getClassLoader().getResource("Imagenes/fondos/puntaje.png"));
				txtpuntaje.setIcon(fondo);
				txtpuntaje.setSize(120,40);
				int posx = info_derecha.getWidth()/2 - txtpuntaje.getWidth()/2;
				txtpuntaje.setLocation(posx, 5);
		
			}
			{
				puntaje = new JLabel("00000");
				puntaje.setForeground(Color.white);
				puntaje.setFocusable(false);
				puntaje.setFont(new java.awt.Font("Tahoma", 0, 36)); 
				puntaje.setHorizontalAlignment( SwingConstants.CENTER );
				puntaje.setSize(120, 40);
				int posx = info_derecha.getWidth()/2 - puntaje.getWidth()/2;
				puntaje.setLocation(posx, txtpuntaje.getHeight()+5);
				puntaje.setBackground(Color.white);
				puntaje.setBorder( BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
	
			}
			{
				txtbombas = new JLabel();
				ImageIcon fondo = new ImageIcon(getClass().getClassLoader().getResource("Imagenes/fondos/bombas.png"));
				txtbombas.setIcon(fondo);
				txtbombas.setSize(120,40);
				int posx = info_derecha.getWidth()/2 - txtpuntaje.getWidth()/2;
				txtbombas.setLocation(posx, puntaje.getY()+puntaje.getHeight()+10);
			}
			{
				bombas = new JLabel("0");
				bombas.setForeground(Color.white);
				bombas.setFocusable(false);
				bombas.setFont(new java.awt.Font("Tahoma", 0, 36)); 
				bombas.setHorizontalAlignment( SwingConstants.CENTER );
				bombas.setSize(120, 40);
				int posx = info_derecha.getWidth()/2 - puntaje.getWidth()/2;
				bombas.setLocation(posx,15 + puntaje.getHeight()+ txtpuntaje.getHeight() + txtbombas.getHeight());
				bombas.setBackground(Color.white);
				bombas.setBorder( BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
			}
			
			info_izquierda.add(energia);
			info_izquierda.add(txtenergia);
			info_izquierda.add(barra);
			info_derecha.add(txtpuntaje);
			info_derecha.add(puntaje);
			info_derecha.add(txtbombas);
			info_derecha.add(bombas);
			info_derecha.add(pausa);
		}
		
		
		
		
		
		
	}
	
	
	
	/**
	 * 
	 * @return retorna el panel derecho de informacion
	 */
	public JPanel getpanel_der()
	{
		return info_derecha;
	}
	
	/**
	 * retorna el panel izquierdo de informacion
	 * @return panel
	 */
	public JPanel getpanel_izq()
	{
		return info_izquierda;
	}
	
	/**
	 * setea la energia maxima del tanque
	 * @param ene energia maxima
	 */
	public void set_energia_max(int ene)
	{
		String energ=String.valueOf(ene); 
		energia.setText(energ);
		barra.setMaximum(ene);
		barra.setValue(ene);
	}
	
	/**
	 * muestra por pantalla la energia actual
	 * @param ene energia actual
	 */
	public void setEnergia(int ene)
	{
		if (ene>barra.getMaximum()) 
			{
				barra.setValue(barra.getMaximum());
				String energ=String.valueOf(barra.getValue()); 
				energia.setText(energ);
			}
		else 
			{
				barra.setValue(ene);
				String energ=String.valueOf(barra.getValue()); 
				energia.setText(energ);
			}
	}
	
	
	/**
	 * Muestra el puntaje en el lugar correspondiente
	 * @param pts puntaje en forma de string
	 */
	public void setPuntaje(int Puntaje)
	{
		String puntos=String.valueOf(Puntaje); 
		//genero un numero de 5 digitos para mostrar por pantalla
		while (puntos.length()<5)
		{
			puntos= "0"+puntos;
		}
		puntaje.setText(puntos);
	}
	
	/**
	 * muestra por pantalla la cantidad de bombas
	 * @param bomb cant de bombas
	 */
	public void setBombas(int bomb)
	{
		String b=String.valueOf(bomb);
		bombas.setText(b);
	}
	
	
	private void jToggleButtonAudioActionPerformed(ActionEvent evt) {
		if(this.pausa.isSelected()) {
			juego.pausa();
			
		} else {
			juego.fin_pausa();
		}
	}

}
